from sqlalchemy import Table, Column, Integer, String
from sqlalchemy.orm import mapper
from database import metadata, db_session, init_db, engine
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship, backref
from usuario import Usuario, usuario
from estadoProyecto import EstadoProyecto, estadoproyecto


class Proyecto(object):
    """ Clase que define el modelo de la tabla proyecto """
    
    query = db_session.query_property()

    def __init__(self, nombre=None, cant_fases=None, lider=None, cant_comite=None, presupuesto=None, estadoProyecto=None):
        """ Metodo init """
        self.nombre = nombre
        self.cant_fases = cant_fases
        self.lider = lider
        self.cant_comite = cant_comite
        self.presupuesto = presupuesto
        self.estadoproyecto = estadoProyecto

    def __repr__(self):
        return self.nombre

proyecto = Table('proyecto', metadata,
    Column('idproyecto', Integer, primary_key=True),
    Column('nombre', String(50), unique=True),
    Column('cant_fases', Integer),
    Column('idlider', Integer, ForeignKey('usuario.idusuario')),
    Column('cant_comite', Integer),
    Column('presupuesto', Integer),
    Column('idestadoproyecto',Integer, ForeignKey('estadoproyecto.idestadoproyecto'))
)

mapper(Proyecto, proyecto, properties={
    'lider' : relationship(Usuario, backref='proyectos', order_by=proyecto.c.idproyecto),
    'estadoproyecto' : relationship(EstadoProyecto, backref='proyectos')
})
